//  
//  Copyright (C) 2009 Alex Allen
// 
//  This program is free software: you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation, either version 3 of the License, or
//  (at your option) any later version.
// 
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
// 
//  You should have received a copy of the GNU General Public License
//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
// 

using System;

namespace twitalot
{
	
	public class User
	{
		#region Fields
		string _id = string.Empty;
		string _name = string.Empty;
		string _screen_name = string.Empty;
		string _location = string.Empty;
		string _description = string.Empty;
		string _profile_image_url = string.Empty;
		string _url = string.Empty;
		bool _protected = false;
		int _followers_count = -1;
		string _profile_background_color = string.Empty;
		string _profile_text_color = string.Empty;
		string _profile_link_color = string.Empty;
		string _profile_sidebar_fill_color = string.Empty;
		string _profile_sidebar_border_color = string.Empty;
		int _friends_count = -1;
		DateTime _created_at = DateTime.MinValue;
		int _favourites_count = -1;
		int _utc_offset = 0;
		string _time_zone = string.Empty;
		string _profile_background_image_url = string.Empty;
		string _profile_background_tile = string.Empty;
		int _statuses_count = -1;
		bool _notifications = false;
		bool _following = false;			
		#endregion

		#region Public Properties
		public DateTime CreatedAt {
			get {
				return _created_at;
			}
			set {
				_created_at = value;
			}
		}

		public string Description {
			get {
				return _description;
			}
			set {
				_description = value;
			}
		}

		public int FavouritesCount {
			get {
				return _favourites_count;
			}
			set {
				_favourites_count = value;
			}
		}

		public int FollowersCount {
			get {
				return _followers_count;
			}
			set {
				_followers_count = value;
			}
		}

		public bool Following {
			get {
				return _following;
			}
			set {
				_following = value;
			}
		}

		public int FriendsCount {
			get {
				return _friends_count;
			}
			set {
				_friends_count = value;
			}
		}

		public string ID {
			get {
				return _id;
			}
			set {
				_id = value;
			}
		}

		public string Location {
			get {
				return _location;
			}
			set {
				_location = value;
			}
		}

		public string Name {
			get {
				return _name;
			}
			set {
				_name = value;
			}
		}

		public bool Notifications {
			get {
				return _notifications;
			}
			set {
				_notifications = value;
			}
		}

		public string ProfileBackgroundColor {
			get {
				return _profile_background_color;
			}
			set {
				_profile_background_color = value;
			}
		}

		public string ProfileBackgroundImageUrl {
			get {
				return _profile_background_image_url;
			}
			set {
				_profile_background_image_url = value;
			}
		}

		public string ProfileBackgroundTile {
			get {
				return _profile_background_tile;
			}
			set {
				_profile_background_tile = value;
			}
		}

		public string ProfileImageUrl {
			get {
				return _profile_image_url;
			}
			set {
				_profile_image_url = value;
			}
		}

		public string ProfileLinkColor {
			get {
				return _profile_link_color;
			}
			set {
				_profile_link_color = value;
			}
		}

		public string ProfileSidebarBorderColor {
			get {
				return _profile_sidebar_border_color;
			}
			set {
				_profile_sidebar_border_color = value;
			}
		}

		public string ProfileSidebarFillColor {
			get {
				return _profile_sidebar_fill_color;
			}
			set {
				_profile_sidebar_fill_color = value;
			}
		}

		public string ProfileTextColor {
			get {
				return _profile_text_color;
			}
			set {
				_profile_text_color = value;
			}
		}

		public bool Protected {
			get {
				return _protected;
			}
			set {
				_protected = value;
			}
		}

		public string ScreenName {
			get {
				return _screen_name;
			}
			set {
				_screen_name = value;
			}
		}

		public int StatusesCount {
			get {
				return _statuses_count;
			}
			set {
				_statuses_count = value;
			}
		}

		public string TimeZone {
			get {
				return _time_zone;
			}
			set {
				_time_zone = value;
			}
		}

		public string Url {
			get {
				return _url;
			}
			set {
				_url = value;
			}
		}

		public int UtcOffset {
			get {
				return _utc_offset;
			}
			set {
				_utc_offset = value;
			}
		}
		#endregion
		
		public User()
		{
			
		}
	}
}
